Robot grasping is a challenging aspect of robotics. On the one hand, it is desirable that robots be flexible enough to interact with a variety of different types of objects, such as door knobs, dishes, glasses, tools, etc. On the other hand, different types of objects require different types of grasps. Moreover, a state of an object, such as a pose of the object, a configuration of the object (e.g., does a cup have a lid?), can also influence how, or even whether, the object should be grasped by a robot. A variety of different techniques exist for determining how a robot should grasp objects. Many of these, however, are computationally complex, often because they evaluate large search spaces and/or use brute force approaches to determine how to grasp objects. For example, given the myriad different varieties of objects with which a robot may interact, the search space for determining an appropriate grasp may be large, requiring extensive computing resources (e.g., processing cycles, memory, etc.) and/or time to select an appropriate grasp.